import axios from "axios";
import router from "../router";
import { Notify } from 'vant';

//创建一个 axios 实例
const instance = axios.create({
    // axios 中请求配置 baseURL，每次请求之前加baseURL，拼接成完整的 URL。
    baseURL: 'http://localhost:8080/api',
    timeout: 5000,
    headers: {'Content-Type': 'application/json;charset=utf-8'},
    //允许跨域时，设置 true
    withCredentials: true, 
});

// 添加请求拦截器 Add a request interceptor
instance.interceptors.request.use(function (config) {
    // 在发送请求之前做的事情 Do something before request is sent
    //const token = localStorage.getItem("token");  //读取 localStorage 中的数据：常规方法
    const { token } = localStorage; //读取 localStorage 中的数据：解构语法
    if (token) {
      config.headers['auth-token'] = token;   //将 token 值写入请求 header 中；
    }
    return config;
  }, function (error) {
    // Do something with request error
    return Promise.reject(error);
  });

//添加响应拦截器 Add a response interceptor
instance.interceptors.response.use(function (response) {
    //对响应数据做些什么？ Do something with response data
    console.log("响应拦截器：", response);
    //根据响应状态码，判断如何处理
    const resCode = response.data.resCode;
    switch (resCode) {
      case '200':
        return response;
        // break;response
      case '9005':
        Notify({type: 'danger', message: response.data.resDesc})
        localStorage.removeItem("token"); //当用户登录失效或未登录时删除本地缓存中的 token
       // router.push("/login");
       router.push("/"); //想要用户没登录但是还是可以看首页
        break;
      default:
        console.log("Axios 响应拦截器，发生异常[default]：" + response.data.resDesc);
        Notify({type: 'danger', message: response.data.resDesc});
        break;
    }
    // if (response.data.resCode === "9005") {
    //   router.push("/login");
    // }
    return response;
  }, function (error) {
    // Do something with response error
    return Promise.reject(error);
  });
  

export default instance;